#ifndef MVCGAMEMODE_H
#define MVCGAMEMODE_H

//五子棋游戏模型类
#include<vector>

//游戏类型，双人还是AI（目前固定AI下黑子）
enum Gametype//enum 枚举类型
{
    MAN,   //双人对弈
    AI    //人机对弈
};

//游戏状态
enum GameStatus
{
    PLAYING,
    WIN,
    DEAD
};

//棋盘尺寸
const int BOARD_GRAD_SIZE=15;

const int MARGIN=30;//棋盘边缘空隙
const int CHESS_R=15;//棋子半径
const int MARK_SIZE=6;//落子标记边长（要落子时在棋盘上的标记）
const int BLOCK_SIZE=40;//格子的大小
const int POS_OFFSITE=BLOCK_SIZE*0.4;//16 鼠标点击的模糊距离上限（离多远不能落子）

const int AI_thinkingTime=600;//AI下棋思考时间

class Gamemodel//游戏模式
{
public:
    Gamemodel(){};//默认构造函数

public:
    //存储当前游戏棋盘和棋子的情况，空白为零，，黑子1，白子-1
    std::vector<std::vector<int>>gameMapVec;//二维数组，可以改编  16 16

    //存储各个点位的评分情况，作为 AI下棋的依据
    std::vector<std::vector<int>>scoreMapVec;

    //标记下棋方  真：黑棋方   假：白棋方  AI
    bool playerflag;

    Gametype gametype;//游戏模式

    GameStatus gamestatus;//游戏状态

    void Startgame(Gametype type);//开始游戏
    /*void JiSuanScore();//计算评分
    void byman(int row,int col);//人下棋
    void byAI(int &clickRow,int &clickCol);//AI下棋
    void renewGameMap(int row,int col);//每次落子后，更新游戏地图
    bool Iswin(int row,int col);//判断游戏是否胜利
    bool IsPingju();//判断是否平局
    */

};

#endif // MVCGAMEMODE_H
